package me.fung.wubi.base.io

import java.nio.charset.Charset

fun ByteArray.startsWith(byteArray: ByteArray): Boolean {
    for (i in byteArray.indices) {
        if (byteArray[i] != getOrNull(i)) return false
    }
    return true
}


fun ByteArray.charset(): Charset? {
    return charsetMap.firstNotNullOfOrNull {
        if (startsWith(it.key)) it.value else null
    }
}

// utf8签名 ef bb bf
// utf16le ff fe
val UTF8_SIGN: ByteArray = arrayOf(0xef, 0xbb, 0xbf).map { it.toByte() }.toByteArray()
val UTF16LE_SIGN: ByteArray = arrayOf(0xff, 0xfe).map { it.toByte() }.toByteArray()

val charsetMap: Map<ByteArray, Charset> = mapOf(
    UTF8_SIGN to Charsets.UTF_8,
    UTF16LE_SIGN to Charsets.UTF_16LE
)
